<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>
    // 1.立即执行函数: 不需要调用, 立马能够自己执行的函数

    function fn() {
        console.log(1)
    }

    fn();

    // 2.写法
    // (function () {})()  或  (function () {}())
    (function (index, length) {
        // index: 2, length: 3
        console.log(`index: ${index}, length: ${length}`);
        // 这个 number 没有变成斜体, 说明它是一个局部变量, 而非全局变量
        var number = 10;
    })(2, 3);    // 第二个小括号可以看做是调用函数, 可以传递实参


    // 疑问: 匿名函数可以写方法名吗?
    (function sum(from, to) {
        console.log(`from: ${from}, to: ${to}`);
        var number = 10;
    }(0, 10));

    // 3.立即执行函数最大的作用就是 独立创建了一个作用域,
    // 里面所有的变量都是局部变量, 避免了命名冲突问题
</script>
</body>
</html>
